System.Collections.ObjectModel.ObservableCollection<T>-klass

Anmärkning

Den här artikeln innehåller ytterligare kommentarer till referensdokumentationen för det här API:et.

Klassen ObservableCollection<T> representerar en dynamisk datainsamling som ger meddelanden när objekt läggs till eller tas bort, eller när hela listan uppdateras.

I många fall är de data som du arbetar med en samling objekt. Till exempel är ett vanligt scenario i databindning att använda en ItemsControl, ListBox, ListView eller TreeView för att visa en samling poster.

Du kan räkna upp alla samlingar som implementerar IEnumerable-gränssnittet. Men för att konfigurera dynamiska bindningar så att infogningar eller borttagningar i samlingen uppdaterar användargränssnittet automatiskt måste samlingen implementera INotifyCollectionChanged-gränssnittet. Det här gränssnittet exponerar CollectionChanged händelsen, en händelse som ska aktiveras när den underliggande samlingen ändras.

Klassen ObservableCollection<T> är en typ av datainsamling som implementerar INotifyCollectionChanged gränssnittet.

Innan du implementerar din egen samling bör du överväga att använda ObservableCollection<T> eller någon av de befintliga samlingsklasserna, till exempel List<T>, Collection<T>och BindingList<T>, bland många andra. Om du har ett avancerat scenario och vill implementera din egen samling kan du överväga att använda IList, som tillhandahåller en icke-allmän samling objekt som kan nås individuellt av index. Implementering IList ger bästa prestanda med databindningsmotorn.

Anmärkning

För att fullständigt stödja överföring av datavärden från bindning av källobjekt till bindningsmål måste varje objekt i samlingen som stöder bindningsbara egenskaper implementera en lämplig meddelandemekanism för egenskapsändring, till exempel INotifyPropertyChanged gränssnittet.

Mer information finns i "Bindning till samlingar" i Översikt över databindning.

Anteckningar om XAML-användning

ObservableCollection<T> kan användas som ett XAML-objektelement i Windows Presentation Foundation (WPF), i versionerna 3.0 och 3.5. Användningen har dock betydande begränsningar.

  • ObservableCollection<T> måste vara rotelementet eftersom attributet x:TypeArguments som måste användas för att ange den begränsade typen av generiska ObservableCollection<T> objekt endast stöds på objektelementet för rotelementet.

  • Du måste deklarera ett x:Class attribut (vilket innebär att byggåtgärden för den här XAML-filen måste vara Page eller någon annan byggåtgärd som kompilerar XAML).

  • ObservableCollection<T> är i ett namnområde och en programsamling som inte initialt mappas till standard-XML-namnområdet. Du måste mappa ett prefix för namnområdet och sammansättningen och sedan använda prefixet på objektelementtaggen för ObservableCollection<T>.

Ett enklare sätt att använda ObservableCollection<T> funktioner från XAML i ett program är att deklarera din egen icke-generiska anpassade samlingsklass som härleds från ObservableCollection<T>och begränsar den till en viss typ. Mappa sedan sammansättningen som innehåller den här klassen och referera till den som ett objektelement i XAML.